﻿#include <iostream>
#include <dlfcn.h>

int main(int argc, char *argv[])
{
    // 1、加载so
    auto so_path = argv[1];
    printf("so_path=%s\n", so_path);

    void *so = dlopen(so_path, RTLD_NOW);
    if (nullptr == so)
    {
        printf("dlopen Error:%s.\n", dlerror());
        return 0;
    }
    ////////////////////////////////
    // 2、执行函数
    typedef void (*gconv_init_t)(void *);

    auto func_name = argv[2];
    printf("func_name=%s\n", func_name);
    gconv_init_t func = (gconv_init_t)dlsym(so,func_name);
    if (nullptr == func)
    {
        printf("dlsym Error:%s.\n", dlerror());
        return 0;
    }

    func(nullptr);
    return 0;
}
